{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn import cross_validation\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 给出一个随机产生的数据集  这里用sin函数，每隔5个点加一个随机的噪音\n",
    "\n",
    "def creat_data(n):\n",
    "    np.random.seed(0)\n",
    "    X = 5*np.random.rand(n,1)\n",
    "    Y = np.sin(X).ravel()\n",
    "    # 随机数个数 每5个 插入一个\n",
    "    noise_num = int(n/5)\n",
    "    # 插入噪音随机数，每5个元素一插\n",
    "    Y[::5] += 3*(0.5 - np.random.rand(noise_num))\n",
    "    # 返回分组数据 训练集：测试集 = 0.75：0.25\n",
    "    return cross_validation.train_test_split(X,Y,test_size=0.25,random_state=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 测试回归决策树函数：\n",
    "def test_DecisionTreeRegressor(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    regr = DecisionTreeRegressor()\n",
    "    regr.fit(X_train,Y_train)\n",
    "    \n",
    "    print('【训练集成绩】Training Score:{0}'.format(regr.score(X_train,Y_train)))\n",
    "    print('【测试集成绩】Testing  Score:{0}'.format(regr.score(X_test,Y_test)))\n",
    "    \n",
    "    \n",
    "    # 绘图\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    X = np.arange(0.0,5.0,0.01)[:,np.newaxis]\n",
    "    Y = regr.predict(X)\n",
    "    \n",
    "    ax.scatter(X_train,Y_train, label=\"train sample\",c='g')\n",
    "    ax.scatter(X_test,Y_test, label=\"test sample\",c='r')\n",
    "    ax.plot(X,Y, label='Predict',linewidth=2,alpha=0.5)\n",
    "    ax.set_xlabel(r'data')\n",
    "    ax.set_ylabel(r'target')\n",
    "    ax.set_title('DecisionTreeRegressor')\n",
    "    ax.legend(framealpha=0.5)\n",
    "    plt.show()\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "【训练集成绩】Training Score:0.9999999999801908\n",
      "【测试集成绩】Testing  Score:0.7891068670888406\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = creat_data(100)\n",
    "test_DecisionTreeRegressor(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 检验【随机划分】与【最优划分】的影响\n",
    "# 测试回归决策树函数：\n",
    "def test_DTR_splitter(*data):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    \n",
    "    splitters = ['best','random']\n",
    "    \n",
    "    for splitter in splitters :\n",
    "            regr = DecisionTreeRegressor(splitter=splitter)\n",
    "            regr.fit(X_train,Y_train)\n",
    "            print(splitter)\n",
    "            print('【训练集成绩】Training Score:{0}'.format(regr.score(X_train,Y_train)))\n",
    "            print('【测试集成绩】Testing  Score:{0}'.format(regr.score(X_test,Y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best\n",
      "【训练集成绩】Training Score:0.9999999999801908\n",
      "【测试集成绩】Testing  Score:0.7891068670888406\n",
      "random\n",
      "【训练集成绩】Training Score:0.9999999999801908\n",
      "【测试集成绩】Testing  Score:0.7789887758633913\n"
     ]
    }
   ],
   "source": [
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = creat_data(100)\n",
    "test_DTR_splitter(X_train,X_test,Y_train,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 检验决策树深度对拟合的影响：\n",
    "# 测试回归决策树函数：\n",
    "def test_DTR_depth(*data,maxdepth):\n",
    "    X_train,X_test,Y_train,Y_test = data\n",
    "    \n",
    "    depths = np.arange(1,maxdepth)\n",
    "    \n",
    "    train_score = []\n",
    "    test_score = []\n",
    "    \n",
    "    for depth in depths :\n",
    "            regr = DecisionTreeRegressor(max_depth=depth)\n",
    "            regr.fit(X_train,Y_train)\n",
    "            train_score.append(regr.score(X_train,Y_train))\n",
    "            test_score.append(regr.score(X_test,Y_test))\n",
    "    # 绘图：\n",
    "    fig = plt.figure()\n",
    "    ax = fig.add_subplot(111)\n",
    "    ax.plot(depths,train_score,label='Training Score')\n",
    "    ax.plot(depths,test_score, label='Testing Score')\n",
    "    ax.set_xlabel(r'maxdepth')\n",
    "    ax.set_ylabel('score')\n",
    "    ax.set_title('DecisionTreeRegressor')\n",
    "    ax.legend(framealpha=0.5)\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 开始测试：\n",
    "X_train,X_test,Y_train,Y_test = creat_data(100)\n",
    "test_DTR_depth(X_train,X_test,Y_train,Y_test,maxdepth=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
